(deftemplate intrebare (slot stringIntrebare)(slot raspuns))
(assert (intrebare (stringIntrebare nil)(raspuns nil)))

(defrule q1
	(intrebare (stringIntrebare nil)(raspuns nil))
	=>
	(printout t "Porneste calculatorul? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Porneste calculatorul?")(raspuns ?r)))
)
(defrule power1
	(intrebare (stringIntrebare "Porneste calculatorul?")(raspuns NU))
	=>
	(printout t "Este pornita sursa? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Este pornita sursa?")(raspuns ?r)))
)

(defrule power2
	(intrebare (stringIntrebare "Porneste calculatorul?")(raspuns DA))
	=>
	(printout t "Booteaza Windows-ul? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Booteaza Windows-ul?")(raspuns ?r)))
)

(defrule sursa1
	(intrebare (stringIntrebare "Este pornita sursa?")(raspuns DA))
    =>
    (printout t "Calculatorul este conectat la curent? (DA/NU)" crlf)
    (bind ?r (read))
	(assert (intrebare (stringIntrebare "Calculatorul este conectat la curent?")(raspuns ?r)))
)
(defrule sursa2
	(intrebare (stringIntrebare "Este pornita sursa?")(raspuns NU))
    =>
    (printout t "Porniti sursa si reluati testul!" crlf)
)
(defrule bootare1
    (intrebare (stringIntrebare "Booteaza Windows-ul?")(raspuns DA))
    =>
    (printout t "Intra in Windows? (DA/NU)" crlf)
    (bind ?r (read))
	(assert (intrebare (stringIntrebare "Intra in Windows?")(raspuns ?r)))
)
(defrule bootare2
    (intrebare (stringIntrebare "Booteaza Windows-ul?")(raspuns NU))
    =>
    (printout t "Intra in BIOS? (DA/NU)" crlf)
    (bind ?r (read))
	(assert (intrebare (stringIntrebare "Intra in BIOS?")(raspuns ?r)))
)
(defrule curent1 
    (intrebare (stringIntrebare "Calculatorul este conectat la curent?")(raspuns NU))
    =>
    (printout t "Contectati calculatorul la curent si reluati testul!" crlf)
)
(defrule curent2
    (intrebare (stringIntrebare "Calculatorul este conectat la curent?")(raspuns DA))
    =>
    (printout t "Posibil sa se fi ars sursa!" crlf)
)
(defrule windows1
    (intrebare (stringIntrebare "Intra in Windows?")(raspuns NU))
    =>
    (printout t "Reinstalati Windows-ul!" crlf)
)
(defrule windows2
    (intrebare (stringIntrebare "Intra in Windows?")(raspuns DA))
    =>
    (printout t "Sunetul functioneaza? (DA/NU)" crlf)
    (bind ?r (read))
	(assert (intrebare (stringIntrebare "Sunetul functioneaza?")(raspuns ?r)))
)
(defrule bios1
    (intrebare (stringIntrebare "Intra in BIOS?")(raspuns NU))
    =>
    (printout t "Posibil ca hardisk-ul sa fie ars!" crlf)
)
(defrule bios2
    (intrebare (stringIntrebare "Intra in BIOS?")(raspuns DA))
    =>
    (printout t "Incercati sa reinstalati Windows-ul!" crlf)
)
(defrule sunet1 
    (intrebare (stringIntrebare "Sunetul functioneaza?")(raspuns DA))
    =>
    (printout t "Pointerul mouse-ului se misca? (DA/NU)" crlf)
    (bind ?r (read))
	(assert (intrebare (stringIntrebare "Pointerul mouse-ului se misca?")(raspuns ?r)))
)
(defrule sunet2
    (intrebare (stringIntrebare "Sunetul functioneaza?")(raspuns NU))
    =>
    (printout t "Reinstalati driver-ul pentru placa de sunet si reluati testul!" crlf)
)
(defrule mouse1 
    (intrebare (stringIntrebare "Pointerul mouse-ului se misca?")(raspuns NU))
    =>
    (printout t "Incercati sa conectati alt mouse si reluati testul!" crlf)
)
(defrule mouse2
    (intrebare (stringIntrebare "Pointerul mouse-ului se misca?")(raspuns DA))
    =>
    (printout t "Tastatura functioneaza? (DA/NU)" crlf)
    (bind ?r (read))
    (assert (intrebare (stringIntrebare "Tastatura functioneaza?") (raspuns ?r)))
)
(defrule tastatura1
    (intrebare (stringIntrebare "Tastatura functioneaza?") (raspuns NU))
    =>
    (printout t "Incercati sa conectati alta tastatura si reluati testul!" crlf)
)
(defrule tastatura2
    (intrebare (stringIntrebare "Tastatura functioneaza?") (raspuns DA))
    =>
    (printout t "Scoate zgomote ciudate? (DA/NU)" crlf)
    (bind ?r (read))
    (assert (intrebare (stringIntrebare "Scoate zgomote ciudate?") (raspuns ?r)))
)
(defrule zgomot1 
    (intrebare (stringIntrebare "Scoate zgomote ciudate?") (raspuns NU))
    => 
    (printout t "Temperatura procesorului este mai ridicata decat de obicei? (DA/NU)" crlf)
    (bind ?r (read))
    (assert (intrebare (stringIntrebare "Temperatura procesorului este mai ridicata decat de obicei?") (raspuns ?r)))
)
(defrule zgomot2
    (intrebare (stringIntrebare "Scoate zgomote ciudate?") (raspuns DA))
    => 
    (printout t "Temperatura procesorului este mai ridicata decat de obicei? (DA/NU)" crlf)
    (bind ?r (read))
    (assert (intrebare (stringIntrebare "Temperatura procesorului este mai ridicata decat de obicei?") (raspuns ?r)))
)
(defrule temperatura1
    (intrebare (stringIntrebare "Temperatura procesorului este mai ridicata decat de obicei?") (raspuns DA))
    =>
    (printout t "Va sfatuim sa duceti calculatorul la service!" crlf)
)
(defrule temperatura2
    (intrebare (stringIntrebare "Temperatura procesorului este mai ridicata decat de obicei?") (raspuns NU))
    =>
    (printout t "Cd-rom-ul functioneaza? (DA/NU)" crlf)
     (bind ?r (read))
    (assert (intrebare (stringIntrebare "Cd-rom-ul functioneaza? ") (raspuns ?r)))
)
(defrule CD-rom1
    (intrebare (stringIntrebare "Cd-rom-ul functioneaza? ") (raspuns DA))
    =>
    (printout t "Duceti calculatorul la reparat deoarece nu putem detecta ce este stricat!" crlf)
)
(defrule CD-rom2
    (intrebare (stringIntrebare "Cd-rom-ul functioneaza? ") (raspuns NU))
    =>
    (printout t "Conectati alt Cd-rom si reluati testul!" crlf)
)
(facts)
(agenda)
(run)